]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
folderView: Reset schemas before removing the folder
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Thu, 21 Nov 2019 21:45:12 +0000 (18:45 -0300)
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Thu, 21 Nov 2019 22:28:46 +0000 (22:28 +0000)
When removing the last icon of a folder, FolderView first removes
the folder from org.gnome.desktop.app-folders.folder-children, then
proceeds to reset all its keys, which removes the relocatable schema.

That order of operations turns out to be problematic. Removing the
folder from 'folder-children' destroys the folder icon, which in turn
destroys the folder view, which throws a load of warnings in the
journal.

Fix that by removing the folder after resetting the schema keys. In
fact, what we're doing here is not using 'this' anymore.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/841

js/ui/appDisplay.js

index 5b9d4d87fa70c8b3b8a6d9db2e91f950836afaa1..bc411b0293d333e45b775a801a25ac10b4ef10cd 100644 (file)
@@ -1454,15 +1454,15 @@ class FolderView extends BaseAppView {
         // Remove the folder if this is the last app icon; otherwise,
         // just remove the icon
         if (folderApps.length == 0) {
-            let settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders' });
-            let folders = settings.get_strv('folder-children');
-            folders.splice(folders.indexOf(this._id), 1);
-            settings.set_strv('folder-children', folders);
-
             // Resetting all keys deletes the relocatable schema
             let keys = this._folder.settings_schema.list_keys();
             for (let key of keys)
                 this._folder.reset(key);
+
+            let settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders' });
+            let folders = settings.get_strv('folder-children');
+            folders.splice(folders.indexOf(this._id), 1);
+            settings.set_strv('folder-children', folders);
         } else {
             this._folder.set_strv('apps', folderApps);
         }